/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package com.viators.actions;

import com.viators.beans.*;
import com.viators.model.*;
import java.text.DateFormat;
import java.text.SimpleDateFormat;
import java.util.List;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.apache.log4j.Logger;
import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionForward;
import org.apache.struts.action.ActionMapping;

/**
 *
 * @author mvalentin
 */
public class VehiculoAction extends org.apache.struts.actions.DispatchAction {

    private static final Logger logger =Logger.getLogger(VehiculoAction.class) ;

    public ActionForward guardarVehiculo(ActionMapping mapping, ActionForm form,
            HttpServletRequest request, HttpServletResponse response)
            throws Exception {


        Sisma_vehiculoActionForm svaf = (Sisma_vehiculoActionForm) form;
        String accion = svaf.getAccion();
        GestionVehiculo gv = new GestionVehiculo();
        GestionListaPasajeros glp = new GestionListaPasajeros();
        boolean flag = false;
        logger.debug("grabar vehiculo accion " + accion);
        if(accion.equals("nuevo")){
            logger.debug("es un nuevo vehiculo... nuevo codigo de vehiculo");
            svaf.setNvehi_codigo(gv.obtenerCodigoVehiculo() + 1);
        }
        
        Sisde_vehiculolistapasajerosBean vaf = new Sisde_vehiculolistapasajerosBean();
        vaf.setNvehi_codigo(svaf.getNvehi_codigo());
        vaf.setNlipa_codigo(svaf.getNlipa_codigo());
        
        DateFormat df = new SimpleDateFormat("dd/MM/yyyy");
        Sisma_listapasajerosBean lista = new Sisma_listapasajerosBean();
        lista.setDlipa_viaje(df.parse(svaf.getDlipa_viaje()));
        lista.setNlipa_codigo(svaf.getNlipa_codigo());
        lista.setClipa_destino(svaf.getClipa_destino());

        logger.debug("edit lista, insert vehiculo, inser vehiculo lista");
        if(glp.modificarListaPasajeros(lista)==true && gv.insertarVehiculo(svaf,accion)==true && gv.insertarVehiculoLista(vaf,accion)){

            List<ListaNueva> lpasaj = (List<ListaNueva>)request.getSession().getAttribute("listaPasajero");
            logger.debug( "lista pasaj.size = "+ lpasaj.size() );
            GestionPasajero gp = new GestionPasajero();
            GestionConductor gc = new GestionConductor();
            boolean det = false;

            if(lpasaj!=null && lpasaj.size()>0){
                logger.debug("==================================");
                String accion2 = accion;

                for(ListaNueva pas : lpasaj){
                    Sisma_personaActionForm spaf = new Sisma_personaActionForm();

                    spaf.setNlipa_codigo(pas.getNlipa_codigo());
                    spaf.setNpais_codigo(pas.getNpais_codigo());
                    spaf.setNtido_codigo(pas.getNtido_codigo());
                    logger.debug(pas.getCpers_nombres() + " ; Tipo doc "+spaf.getNtido_codigo() + " ;pais " + spaf.getNpais_codigo() );
                    spaf.setNesci_codigo(pas.getNesci_codigo());
                    //TODO: verificar
                    //if(accion.equals("nuevo") || pas.getNpers_codigo()==0){
                    accion2 = pas.getAccion();
                    if( accion2.equals("nuevo")){
                        logger.debug("insertar a " + pas.getCpers_nombres());
                        spaf.setNpers_codigo(gc.generarCodigoConductor() + 1);
                    }else{
                        logger.debug("modificar a " + pas.getCpers_nombres());
                        spaf.setNpers_codigo(pas.getNpers_codigo());
                    }

                    spaf.setCdope_numero(pas.getCdope_numero());
                    spaf.setCpers_apematerno(pas.getCpers_apematerno());
                    spaf.setCpers_apepaterno(pas.getCpers_apepaterno());
                    spaf.setCpers_nombres(pas.getCpers_nombres());
                    spaf.setCpers_ocupacion(pas.getCpers_ocupacion());
                    spaf.setDpers_fechanacimientoconductor(pas.getDpers_fechanacimiento());
                   if(gc.insertarConductor(spaf,accion2)==true
                    && gc.insertarNroDoc(spaf,accion2)==true
                    && gp.insertarPasajero(spaf,1,accion2)==true ){
                        det=true;
                    }

                }

            }else{
                 det = true;
            }
            
            if(det){
                flag = true;
            }else{
                flag = false;
            }
            
        }else{
            flag=false;
        }


        request.setAttribute("validador", flag);
        request.setAttribute("mensaje", "");
        return mapping.findForward("validar");
    }
    
}
